System.Nullable<T> 結構

本文提供此 API 參考文件的補充備註。

類別 Nullable 代表可指派的實值型別 null

如果型別可以指派值或可指派 null,則類型會是可為 Null 的,這表示類型沒有任何值。 根據預設,所有參考型別,例如 String、 都是可為 Null 的,但所有實值型別,例如 Int32, 則不是。

在 C# 和 Visual Basic 中,您可以使用實值類型之後的 ? 表示法,將實值類型標示為可為 Null。 例如, int? 在 C# 或 Integer? Visual Basic 中,宣告可指派的整數實值型別 null

結構 Nullable<T> 僅支援使用實值型別做為可為 Null 的類型,因為參考型別的設計是可為 Null 的。

類別 Nullable 提供 結構的 Nullable<T> 互補支援。 類別 Nullable 支援取得可為 Null 型別的基礎型別,以及在基礎實值型別不支援泛型比較和相等運算的可 Null 型別配對上進行比較和相等運算。

基本屬性

結構的兩個 Nullable<T> 基本成員是 HasValueValue 屬性。 HasValue如果 物件的 屬性Nullable<T>true,可以使用 屬性來存取Value物件的值。 HasValue如果 屬性為 false,則物件的值未定義,而且嘗試存取Value屬性會InvalidOperationException擲回 。

Box 處理和 Unbox 處理

當 Boxed 可為 Null 的型別時,Common Language Runtime 會自動方塊物件的基礎值 Nullable<T> ,而不是 Nullable<T> 物件本身。 也就是說,如果 HasValue 屬性是 true,則會將 屬性的內容 Value 設為 Boxed。 將可為 Null 型別的基礎值解壓縮時,Common Language Runtime 會建立初始化為基礎值的新 Nullable<T> 結構。

HasValue如果可為 Null 型別的 屬性為 false,Boxing 作業的結果為 null。 因此,如果 Boxed 可為 Null 的型別傳遞至預期物件自變數的方法,則必須準備該方法來處理自變數為 null的案例。 當解壓縮成可為 Null 的類型時 null ,Common Language Runtime 會建立新的 Nullable<T> 結構,並將其 屬性初始化 HasValuefalse

Windows 執行時間元件

您可以將類型納入 Nullable<T> 為 WinMD 連結庫中匯出之結構的成員。